package br.org.isvi.interpretador.portugol.operations;

import br.org.isvi.interpretador.portugol.exception.SemanticErrorException;
import br.org.isvi.interpretador.portugol.types.Kind;
import br.org.isvi.interpretador.portugol.types.Symbol;

public class UtilsValidator {
	
	public static void verifyKind(Symbol s1, Symbol s2) {
		if(!s1.compatible(s2))
			throw new SemanticErrorException("Os Tipos " + getRealVariableValue(s2).getKind() + " e " + getRealVariableValue(s1).getKind() + " não são compatíveis nesta operação!");
	}
	
	public static Symbol getRealVariableValue(Symbol v) {
		Symbol ret = v;
		
		if(v.getKind() == Kind.VARIAVEL) {
			ret = (Symbol)v.getValue();
		}
		
		return ret;
	}
}
